home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 2
/
Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso
/
Aminet
/
misc
/
amag
/
sh9302a.lha
/
KickSwitch (S.25)
/
KickReboot.asm
next >
Wrap
Assembly Source File
|
1993-11-10
|
1KB
|
38 lines
; KickReboot.asm geschrieben von Patrick Ohly
; nach ColdReboot.asm veröffentlicht von Commodore
ABSEXECBASE EQU 4 ;Zeiger auf ExecBase
MAGIC_ROMEND EQU $01000000 ;Ende des Kickstart-ROMs
MAGIC_SIZEOFFSET EQU -$14 ;Offset vom Ende des ROMs zur Größe
_LVOSupervisor EQU -30 ;Offset der Supervisor-Funktion
_LVODisable EQU -120 ;Offset der Disable-Funktion
CHKSUM EQU $52 ;Offset für Library-Checksum
PRA EQU $bfe001 ;Register mit linker Maustaste
LMB EQU 6 ;Bit für die linke Maustaste
section text,code
XDEF _KickReboot
_KickReboot:
move.l ABSEXECBASE,a6
jsr _LVODisable(a6) ;schalte Interrupts ab
addq.w #1,CHKSUM(a6) ;erzwingt Neuaufbau der ExecBase
lea.l Loop(pc),a5 ;Adresse des auszuführenden Codes
jsr _LVOSupervisor(a6) ;Code anspringen
;Funktion wird nicht beendet!
ds.l 0
Loop: move.b PRA,d0 ;Auf Mausklick warten ...
btst #LMB,d0
bne Loop
lea.l MAGIC_ROMEND,a0 ;Adresse der Initialisierungs-
sub.l MAGIC_SIZEOFFSET(a0),a0 ;Routine im ROM ausrechnen ...
move.l 4(a0),a0
subq.l #2,a0
reset ;Reset ...
jmp (a0) ;Routine anspringen